﻿#ifndef WRWORKTCPCOMMCLIENTINTERFACE_H
#define WRWORKTCPCOMMCLIENTINTERFACE_H

#include "WRWorkTcpCommClientObject.h"
#include "WRWorkTcpCommClientAffair.h"

//表示工作TCP通讯客户端接口。
class WRWorkTcpCommClientInterface
{
    friend class WRWorkTcpCommClientObject;
    friend class WRWorkTcpCommClientAffair;

private:
    QUuid m_uuid;
    QString m_name;
    int m_index;
    WRWorkTcpCommClientObject* m_object;
    WRWorkTcpCommClientAffair* m_affair;

protected:
    //初始化工作TCP通讯客户端接口。
    WRWorkTcpCommClientInterface(const QUuid& uuid, const QString& name, int index, WRWorkTcpCommClientObject* target)
        : m_uuid(uuid), m_name(name), m_index(index), m_object(target), m_affair(0)
    {
        //add code here
    }
    //初始化工作TCP通讯客户端接口。
    WRWorkTcpCommClientInterface(const QUuid& uuid, const QString& name, int index, WRWorkTcpCommClientAffair* target)
        : m_uuid(uuid), m_name(name), m_index(index), m_object(target->object()), m_affair(target)
    {
        //add code here
    }

    //清理当前对象所占用的相关资源。
    virtual ~WRWorkTcpCommClientInterface(void)
    {
        //add code here
    }

public:
    //获取接口标识。
    inline const QUuid& uuid(void) const
    {
        return m_uuid;
    }
    //获取接口名称。
    inline const QString& name(void) const
    {
        return m_name;
    }
    //获取接口索引。
    inline int index(void) const
    {
        return m_index;
    }

    //获取对象。
    inline WRWorkTcpCommClientObject* object(void) const
    {
        return m_object;
    }
    //获取事务。
    inline WRWorkTcpCommClientAffair* affair(void) const
    {
        return m_affair;
    }

    //创建当前接口的新接口。
    virtual WRWorkTcpCommClientInterface* clone(WRWorkTcpCommClientObject* target) = 0;    
    //创建当前接口的新接口。
    virtual WRWorkTcpCommClientInterface* clone(WRWorkTcpCommClientAffair* target) = 0;

    //获取业务处理接口。
    virtual WRWorkDealer* workDealer(void)
    {
        return 0;
    }
    //获取业务处理接口。
    virtual WRTaskDealer* taskDealer(void)
    {
        return 0;
    }
    //获取数据源接口。
    virtual WRDataSource* dataSource(void)
    {
        return 0;
    }
    //获取事件据源接口。
    virtual WREventSource* eventSource(void)
    {
        return 0;
    }
    //获取状态源接口。
    virtual WRStateSource* stateSource(void)
    {
        return 0;
    }

    //处理数据。
    virtual void procData(const unsigned char* buf, int len) = 0;
};

#endif // WRWORKTCPCOMMCLIENTINTERFACE_H
